package com.study.scala

/**
  * 伴生类和伴生对象
  * 如果有一个class，还有一个和class同名的object
  * 那么就称object为class的伴生对象，class是object的伴生类
  */
object ApplyDemo {

  def main(args: Array[String]): Unit = {

    val a = ApplyTest() // ==> object.apply

    val b = new ApplyTest()
    b() // ==> class.apply

  }
}

class ApplyTest {
  def apply() = {
    println("class apply()")
  }

}

object ApplyTest {

  // 一般是在object的apply方法中new Class
  def apply(): ApplyTest = {
    println("object apply()")
    new ApplyTest
  }
}
